using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace mesoBoard.Data.Repositories
{
    public interface IThreadRepository
    {
        void SyncAllThreads();
        void SyncThread(int ThreadID);
        void AddThreadView(int ThreadID, int UserID);
        bool HasViewed(int ThreadID, int UserID);
        bool HasNewPost(int ThreadID, int UserID);
        Post GetLastPost(int ThreadID);
        Thread GetThread(int ThreadID);
        IEnumerable<Thread> GetAllThreads(int ForumID);
        IEnumerable<Thread> GetAllThreads();
        void CreateThread(Thread TheThread);
        int CreateThread(Thread TheThread, Post FirstPost);
        int CreateThread(Thread TheThread, Post FirstPost, string PollText, string[] PollOptions);
        int PostCount(int ThreadID);
        IEnumerable<Thread> GetPagedThreads(int ForumID, int PageNumber, int PageSize);
        IEnumerable<Thread> GetGlobalAnnouncements();
        void UpdateThread(Thread TheThread);
        void AddViewed(int ThreadID, int UserID);
        void DeleteViews(int UserID);
        IEnumerable<Subscription> GetSubscriptions(int ThreadID);
        void CreateSubscription(Subscription s);
        void DeleteSubscription(int UserID, int ThreadID);
        bool IsSubscribed(int UserID, int ThreadID);
        void DeleteThread(int ThreadID);
        int TotalThreads();
 
        IEnumerable<Thread> GetThreads(int forumID);
        void DeleteThreadViewStamp(int UserID, int ThreadID);
        ThreadViewStamp GetThreadViewStamp(int UserID, int ThreadID);
    }
}